package com.ruoyi.business.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 支付单对象 jt_payment_order
 *
 * @author Alan Zhang
 * @date 2025-04-10
 */
public class JtPaymentOrder extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 支付id */
    private Long paymentId;

    /** 用户ID */
    @Excel(name = "用户ID")
    private Long userId;

    /** 订单ID */
    @Excel(name = "订单ID")
    private Long orderId;

    /** 订单号 */
    @Excel(name = "订单号")
    private String orderNo;

    /** 支付订单号 */
    @Excel(name = "支付订单号")
    private String paymentNo;

    /** 支付金额 */
    @Excel(name = "支付金额")
    private BigDecimal paymentAmount;

    /** 货币 CNY USD */
    @Excel(name = "货币")
    private String currency;

    /** 付款方式 1线下支付 2国际信用卡 3PayPal */
    @Excel(name = "付款方式")
    private Integer paymentMethod;

    /** 支付平台返回结果 */
    @Excel(name = "支付平台返回结果")
    private String paymentMsg;

    /** 支付状态 0待支付 1已支付 2支付取消 3支付异常 */
    @Excel(name = "支付状态")
    private Integer paymentStatus;

    /** 订单名称 */
    @Excel(name = "订单名称")
    private String subject;

    /** 支付平台交易号 */
    @Excel(name = "支付平台交易号")
    private String tradeNo;

    /** 支付平台用户帐号 */
    @Excel(name = "支付平台用户帐号")
    private String buyerUser;

    /** 支付时间 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date payTime;

    /** 关闭时间 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "关闭时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date closeTime;

    public void setPaymentId(Long paymentId)
    {
        this.paymentId = paymentId;
    }

    public Long getPaymentId()
    {
        return paymentId;
    }

    public void setUserId(Long userId)
    {
        this.userId = userId;
    }

    public Long getUserId()
    {
        return userId;
    }

    public void setOrderId(Long orderId)
    {
        this.orderId = orderId;
    }

    public Long getOrderId()
    {
        return orderId;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public void setPaymentNo(String paymentNo)
    {
        this.paymentNo = paymentNo;
    }

    public String getPaymentNo()
    {
        return paymentNo;
    }

    public void setPaymentAmount(BigDecimal paymentAmount)
    {
        this.paymentAmount = paymentAmount;
    }

    public BigDecimal getPaymentAmount()
    {
        return paymentAmount;
    }

    public void setCurrency(String currency)
    {
        this.currency = currency;
    }

    public String getCurrency()
    {
        return currency;
    }

    public void setPaymentMethod(Integer paymentMethod)
    {
        this.paymentMethod = paymentMethod;
    }

    public Integer getPaymentMethod()
    {
        return paymentMethod;
    }

    public void setPaymentMsg(String paymentMsg)
    {
        this.paymentMsg = paymentMsg;
    }

    public String getPaymentMsg()
    {
        return paymentMsg;
    }

    public void setPaymentStatus(Integer paymentStatus)
    {
        this.paymentStatus = paymentStatus;
    }

    public Integer getPaymentStatus()
    {
        return paymentStatus;
    }

    public void setSubject(String subject)
    {
        this.subject = subject;
    }

    public String getSubject()
    {
        return subject;
    }

    public void setTradeNo(String tradeNo)
    {
        this.tradeNo = tradeNo;
    }

    public String getTradeNo()
    {
        return tradeNo;
    }

    public void setBuyerUser(String buyerUser)
    {
        this.buyerUser = buyerUser;
    }

    public String getBuyerUser()
    {
        return buyerUser;
    }

    public void setPayTime(Date payTime)
    {
        this.payTime = payTime;
    }

    public Date getPayTime()
    {
        return payTime;
    }

    public void setCloseTime(Date closeTime)
    {
        this.closeTime = closeTime;
    }

    public Date getCloseTime()
    {
        return closeTime;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("paymentId", getPaymentId())
                .append("userId", getUserId())
                .append("orderId", getOrderId())
                .append("paymentNo", getPaymentNo())
                .append("paymentAmount", getPaymentAmount())
                .append("currency", getCurrency())
                .append("paymentMethod", getPaymentMethod())
                .append("paymentMsg", getPaymentMsg())
                .append("paymentStatus", getPaymentStatus())
                .append("subject", getSubject())
                .append("tradeNo", getTradeNo())
                .append("buyerUser", getBuyerUser())
                .append("payTime", getPayTime())
                .append("closeTime", getCloseTime())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .toString();
    }
}
